﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioTipoMidia
    {
        private IRepositorioTipoMidia _repositorioTipoMidia;

        /// <summary>
        /// 
        /// </summary>
        public NegocioTipoMidia()
        {
            _repositorioTipoMidia = new RepositorioTipoMidia();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoMidia"></param>
        /// <returns></returns>
        public TipoMidia Inserir(TipoMidia tipoMidia)
        {
            tipoMidia.Codigo = GeradorCodigo.GerarCodigo(1);
            tipoMidia.Codigo += (_repositorioTipoMidia.ObterUltimoIdCodigoInteiro() + 1).ToString();
            tipoMidia.Codigo += GeradorCodigo.GerarCodigo(1, tipoMidia.Codigo);
            return _repositorioTipoMidia.Inserir(tipoMidia);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoMidia"></param>
        /// <returns></returns>
        public TipoMidia Atualizar(TipoMidia tipoMidia)
        {
            return _repositorioTipoMidia.Atualizar(tipoMidia);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoMidia"></param>
        public void Excluir(TipoMidia tipoMidia)
        {
            TipoMidia tipoMidiaTmp = ObterPorId(tipoMidia.TipoMidiaId);
            _repositorioTipoMidia.Excluir(tipoMidiaTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<TipoMidia> ObterTodos()
        {
            return _repositorioTipoMidia.ObterTodos();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public TipoMidia ObterPorId(int id)
        {
            return _repositorioTipoMidia.ObterPorId(id);
        }

        public TipoMidia ObterPorCodigo(string codigo)
        {
            return _repositorioTipoMidia.ObterPorCodigo(codigo);
        }

        public IList<TipoMidia> ObterPorDescricao(int inicio, int quantidade, int quantidadeMinima, string descricao)
        {
            return _repositorioTipoMidia.ObterPorDescricao(inicio, quantidade, quantidadeMinima,descricao);
        }
    }
}